有没有什么办法把多核cpu虚拟化成单核,从而提高"单核"性能,让那些只吃单核的老应用能更流畅运行?

您所在的位置:网站首页 cpu倍频应用模式 微星 有没有什么办法把多核cpu虚拟化成单核,从而提高"单核"性能,让那些只吃单核的老应用能更流畅运行?

有没有什么办法把多核cpu虚拟化成单核,从而提高"单核"性能,让那些只吃单核的老应用能更流畅运行?

2023-03-21 18:09| 来源: 网络整理| 查看: 265

单核虚拟化为多核,是采用时间切片,在不同的切片中将资源赋给不同的工作负载使用达成的。

反之,将多核心虚拟化成为单核心,可以通过增加计算宽度,或者多个核心交错执行,这两种方式进行。

对于增加计算宽度的方式,当我们要计算的对象没有那么大的时候(远超一个核心所能处理的宽度),其实最终其它核心也就是陪着白跑,并没有发挥实际作用。何况现在大部分CPU都支持SIMD扩展,对于128bit/256bit的计算单核心就可以轻松应对,需要更宽位宽的情况在日常不多。(Intel的AVX512指令扩张都很少有程序用)

再者这种方式下如果不同核心之间发生进位或者借位,则需要跨CPU核心进行协调,会有额外开销且相对较高。

对于多核心交错进行执行,首先当前CPU上并没有这样的时钟控制模块,可以将时钟信号按照核心数倍频之后,让每个核心错位运行。用纯软件的方法模拟的话,最终等于让每个核心以原本的1/n(n为核心数)的速度运行,则总体上与单核心运行同频,结合下面的其它影响则性能还不如单核心。

各个核心有其独立的寄存器以及L1缓存,相互之间无法直接共享这些资源。因此在协同干同一件事情的时候,会不可避免地需要将数据在不同的核心之间移动来移动过去。因为当前CPU并没有在核心之间直接交换数据的手段,数据需要首先推出到L2甚至L3,再回读,才能完成移动。这里面每次都会引入好几十个时钟周期的延迟。

如果巧妙设计程序,让数据无需在核心之间移动,那么实际上也就是已经实现了高效的多线程程序,那么直接开核心数个线程跑就是了,也不用那么费劲了。

最后,CPU开始堆核心数,是因为单核的性能已经接近天花板上不去了。单核的性能接近天花板的原因在于主频无法再进一步提高,因为芯片发热和主频是立方倍的关系。

而多核心目前性能发挥有限,很多程序吃单核性能最为根本的问题还是在软件设计本身。因此改善性能也主要要靠改变软件设计思路和手段。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3